3-3 MATLAB けc庣 API

在撰寫 MEX 檔案之前,您必須先了解 MATLAB 變數的內部資料結構,以便和 C 的資料結構進行對應。MATLAB 內部最主要的資料型態是 mxArray,它是一個 C 語言下的結構(Structure),至少包含了下列資訊:

  1. MATLAB 對應的變數名稱
  2. 維度
  3. 資料型態
  4. 實數或複數
  5. 是否為稀疏矩陣(Sparse Matrix)
在每個 mxArray 結構之下,包含兩個指標(Pointers)pr 及 pi,分別指到這個變數的實部和虛部,兩者都是資料型態為 double 的一維陣列。欲取得這兩個指標,須用 MATLAB 提供的 API 函數 mxGetPr 及 mxGetPi 來取得,透過這兩個指標,就可存取某個 MATLAB 變數內的所有數值(例如:一個矩陣中,某個元素的實部或虛部值,或某個結構陣列中的欄位值等)。

MATLAB 提供了很多 API 函數,這些函數的名稱依其功而有不同的字頭(Prefixes),說明如下:

  1. 以 mx 為字頭的 API 函數,代表對 MATLAB 內部變數資料(型態為 mxArray)的存取,例如 mxGetPr(傳回實部指標)、mxGetPi(傳回虛部指標)、mxGetM(取得矩陣的橫列維度)、mxGetN(取得矩陣的直行維度)、mxCreateDoubleMatrix(產生變數型態為 double 的矩陣)等。
  2. 以 mex 為字頭的 API 函數,代表在 MATLAB 環境下執行的動作,例如 mexErrMsgTxt(在 MATLAB 印出錯誤訊息,並跳出 MEX 檔案)、mexCallMATLAB(呼叫 MATLAB 引擎以執行 MATLAB 之數值運算)、mexPrintf(在 MATLAB 印出訊息)等。
  3. 以 mat 為字頭的 API 函數,代表對 MAT 檔案的讀寫或處理,例如:matGetArray(從 MAT 檔案讀取 mxArray 陣列),matDeleteArray(從 MAT 檔案移除 mxArray 陣列)等。
這些 API 函數種類繁多,各有不同的特殊功能,您可直接參閱第一節所提到的「MATLAB Application Program Interface Reference」手冊,選用適合的 API 函數。
MATLAB程式設計:進階篇